Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


LXST/Sources.py 0.4.7 (cdaf47c2) Text, 16.59 KB

Tff7b72import T7ee787os
Tff7b72import T7ee787RNS
Tff7b72import T7ee787math
Tff7b72import T7ee787time
Tff7b72import T7ee787threading
Tff7b72import T7ee787numpy Tff7b72as T7ee787np
Tff7b72from T7ee787collections Tff7b72import Te6edf3deque
Tff7b72from T7ee787.T7ee787Sinks Tff7b72import Te6edf3LocalSink
Tff7b72from T7ee787.T7ee787Codecs Tff7b72import Te6edf3CodecTb4b4b4, Te6edf3CodecError
Tff7b72from T7ee787.T7ee787CodecsT7ee787.T7ee787libsT7ee787.T7ee787pyogg Tff7b72import Te6edf3OpusFile

Tff7b72class T56d364LinuxBackendTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3SAMPLERATE Tff7b72= T79c0ff48000

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3preferred_deviceTff7b72=Tff7b72NoneTb4b4b4, Te6edf3samplerateTff7b72=Te6edf3SAMPLERATETb4b4b4)Tb4b4b4:
Tff7b72from T7ee787.T7ee787PlatformsT7ee787.T7ee787linux Tff7b72import Te6edf3soundcard
Tff7b72selfTff7b72.Td2a8ffsamplerate Tff7b72= Te6edf3samplerate
Tff7b72selfTff7b72.Td2a8ffsoundcard Tff7b72= Te6edf3soundcard
Tff7b72if Te6edf3preferred_deviceTb4b4b4:
Tff7b72tryTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffget_microphoneTb4b4b4(Te6edf3preferred_deviceTb4b4b4)
Tff7b72exceptTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffdefault_microphoneTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffdefault_microphoneTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffchannels Tff7b72= Tff7b72selfTff7b72.Td2a8ffdeviceTff7b72.Td2a8ffchannels
Tff7b72selfTff7b72.Td2a8ffbitdepth Tff7b72= T79c0ff32
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffUsing input device Tffd700{Tff7b72selfTff7b72.Td2a8ffdeviceTffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)

Tff7b72def Td2a8ffall_microphonesTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72return Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffall_microphonesTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffdefault_microphoneTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72return Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffdefault_microphoneTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffflushTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffdeviceTff7b72.Td2a8ffflushTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffget_recorderTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3samples_per_frameTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffdeviceTff7b72.Td2a8ffrecorderTb4b4b4(Te6edf3samplerateTff7b72=Tff7b72selfTff7b72.Td2a8ffSAMPLERATETb4b4b4, Te6edf3blocksizeTff7b72=Te6edf3samples_per_frameTb4b4b4)

Tff7b72def Td2a8ffrelease_recorderTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72pass

Tff7b72class T56d364AndroidBackendTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3SAMPLERATE Tff7b72= T79c0ff48000

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3preferred_deviceTff7b72=Tff7b72NoneTb4b4b4, Te6edf3samplerateTff7b72=Te6edf3SAMPLERATETb4b4b4)Tb4b4b4:
Tff7b72from T7ee787.T7ee787PlatformsT7ee787.T7ee787android Tff7b72import Te6edf3soundcard
Tff7b72selfTff7b72.Td2a8ffsamplerate Tff7b72= Te6edf3samplerate
Tff7b72selfTff7b72.Td2a8ffsoundcard Tff7b72= Te6edf3soundcard
Tff7b72if Te6edf3preferred_deviceTb4b4b4:
Tff7b72tryTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffget_microphoneTb4b4b4(Te6edf3preferred_deviceTb4b4b4)
Tff7b72exceptTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffdefault_microphoneTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffdefault_microphoneTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffchannels Tff7b72= Tff7b72selfTff7b72.Td2a8ffdeviceTff7b72.Td2a8ffchannels
Tff7b72selfTff7b72.Td2a8ffbitdepth Tff7b72= T79c0ff32
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffUsing input device Tffd700{Tff7b72selfTff7b72.Td2a8ffdeviceTffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)

Tff7b72def Td2a8ffall_microphonesTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72return Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffall_microphonesTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffdefault_microphoneTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72return Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffdefault_microphoneTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffflushTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffdeviceTff7b72.Td2a8ffflushTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffget_recorderTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3samples_per_frameTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffdeviceTff7b72.Td2a8ffrecorderTb4b4b4(Te6edf3samplerateTff7b72=Tff7b72selfTff7b72.Td2a8ffSAMPLERATETb4b4b4, Te6edf3blocksizeTff7b72=Te6edf3samples_per_frameTb4b4b4)

Tff7b72def Td2a8ffrelease_recorderTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72pass

Tff7b72class T56d364DarwinBackendTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3SAMPLERATE Tff7b72= T79c0ff48000

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3preferred_deviceTff7b72=Tff7b72NoneTb4b4b4, Te6edf3samplerateTff7b72=Te6edf3SAMPLERATETb4b4b4)Tb4b4b4:
Tff7b72from T7ee787.T7ee787PlatformsT7ee787.T7ee787darwin Tff7b72import Te6edf3soundcard
Tff7b72selfTff7b72.Td2a8ffsamplerate Tff7b72= Te6edf3samplerate
Tff7b72selfTff7b72.Td2a8ffsoundcard Tff7b72= Te6edf3soundcard
Tff7b72if Te6edf3preferred_deviceTb4b4b4:
Tff7b72tryTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffget_microphoneTb4b4b4(Te6edf3preferred_deviceTb4b4b4)
Tff7b72exceptTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffdefault_microphoneTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffdefault_microphoneTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffchannels Tff7b72= Tff7b72selfTff7b72.Td2a8ffdeviceTff7b72.Td2a8ffchannels
Tff7b72selfTff7b72.Td2a8ffbitdepth Tff7b72= T79c0ff32
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffUsing input device Tffd700{Tff7b72selfTff7b72.Td2a8ffdeviceTffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)

Tff7b72def Td2a8ffall_microphonesTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72return Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffall_microphonesTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffdefault_microphoneTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72return Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffdefault_microphoneTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffflushTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffdeviceTff7b72.Td2a8ffflushTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffget_recorderTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3samples_per_frameTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffdeviceTff7b72.Td2a8ffrecorderTb4b4b4(Te6edf3samplerateTff7b72=Tff7b72selfTff7b72.Td2a8ffSAMPLERATETb4b4b4, Te6edf3blocksizeTff7b72=Te6edf3samples_per_frameTb4b4b4)

Tff7b72def Td2a8ffrelease_recorderTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72pass

Tff7b72class T56d364WindowsBackendTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3SAMPLERATE Tff7b72= T79c0ff48000

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3preferred_deviceTff7b72=Tff7b72NoneTb4b4b4, Te6edf3samplerateTff7b72=Te6edf3SAMPLERATETb4b4b4)Tb4b4b4:
Tff7b72from T7ee787.T7ee787PlatformsT7ee787.T7ee787windows Tff7b72import Te6edf3soundcard
Tff7b72selfTff7b72.Td2a8ffsamplerate Tff7b72= Te6edf3samplerate
Tff7b72selfTff7b72.Td2a8ffsoundcard Tff7b72= Te6edf3soundcard
Tff7b72if Te6edf3preferred_deviceTb4b4b4:
Tff7b72tryTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffget_microphoneTb4b4b4(Te6edf3preferred_deviceTb4b4b4)
Tff7b72exceptTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffdefault_microphoneTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ffdevice Tff7b72= Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffdefault_microphoneTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffchannels Tff7b72= Tff7b72selfTff7b72.Td2a8ffdeviceTff7b72.Td2a8ffchannels
Tff7b72selfTff7b72.Td2a8ffbitdepth Tff7b72= T79c0ff32
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffUsing input device Tffd700{Tff7b72selfTff7b72.Td2a8ffdeviceTffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)

Tff7b72def Td2a8ffall_microphonesTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72return Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffall_microphonesTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffdefault_microphoneTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72return Tff7b72selfTff7b72.Td2a8ffsoundcardTff7b72.Td2a8ffdefault_microphoneTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffflushTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffdeviceTff7b72.Td2a8ffflushTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffget_recorderTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3samples_per_frameTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffdeviceTff7b72.Td2a8ffrecorderTb4b4b4(Te6edf3samplerateTff7b72=Tff7b72selfTff7b72.Td2a8ffSAMPLERATETb4b4b4, Te6edf3blocksizeTff7b72=Te6edf3samples_per_frameTb4b4b4)

Tff7b72def Td2a8ffrelease_recorderTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72pass

Tff7b72def Td2a8ffget_backendTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_linuxTb4b4b4(Tb4b4b4)Tb4b4b4: Tff7b72return Te6edf3LinuxBackend
Tff7b72elif Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_windowsTb4b4b4(Tb4b4b4)Tb4b4b4: Tff7b72return Te6edf3WindowsBackend
Tff7b72elif Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_darwinTb4b4b4(Tb4b4b4)Tb4b4b4: Tff7b72return Te6edf3DarwinBackend
Tff7b72elif Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_androidTb4b4b4(Tb4b4b4)Tb4b4b4: Tff7b72return Te6edf3AndroidBackend
Tff7b72elseTb4b4b4: Tff7b72return Tff7b72None

Te6edf3Backend Tff7b72= Te6edf3get_backendTb4b4b4(Tb4b4b4)

Tff7b72class T56d364SourceTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3release_lock Tff7b72= Te6edf3threadingTff7b72.Td2a8ffLockTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffreleaseTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffrelease_lockTff7b72.Td2a8fflockedTb4b4b4(Tb4b4b4)Tb4b4b4: Tff7b72return
Tff7b72with Tff7b72selfTff7b72.Td2a8ffrelease_lockTb4b4b4:
Tff7b72if Tff7b72not Tffa657hasattrTb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff"Ta5d6ffreleasedTa5d6ff"Tb4b4b4) Tff7b72or Tff7b72not Tff7b72selfTff7b72.Td2a8ffreleasedTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffreleased Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffshould_run Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffframe_deque Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffcodec Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ff_sink Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ff_source Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ff_filters Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffbackend Tff7b72= Tff7b72None

Tff7b72class T56d364LocalSourceTb4b4b4(Te6edf3SourceTb4b4b4)Tb4b4b4: Tff7b72pass
Tff7b72class T56d364RemoteSourceTb4b4b4(Te6edf3SourceTb4b4b4)Tb4b4b4: Tff7b72pass

Tff7b72class T56d364LoopbackTb4b4b4(Te6edf3LocalSourceTb4b4b4, Te6edf3LocalSinkTb4b4b4)Tb4b4b4:
Te6edf3MAX_FRAMES Tff7b72= T79c0ff128

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3target_frame_msTff7b72=T79c0ff70Tb4b4b4, Te6edf3codecTff7b72=Tff7b72NoneTb4b4b4, Te6edf3sinkTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffframe_deque Tff7b72= Te6edf3dequeTb4b4b4(Te6edf3maxlenTff7b72=Tff7b72selfTff7b72.Td2a8ffMAX_FRAMESTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffshould_run Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffloopback_thread Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffloopback_lock Tff7b72= Te6edf3threadingTff7b72.Td2a8ffLockTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffcodec Tff7b72= Te6edf3codec
Tff7b72selfTff7b72.Td2a8ff_sink Tff7b72= Te6edf3sink
Tff7b72selfTff7b72.Td2a8ff_source Tff7b72= Tff7b72None

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffshould_runTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff startingTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffshould_run Tff7b72= Tff7b72True

Tff7b72def Td2a8ffstopTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffshould_run Tff7b72= Tff7b72False

Tff7b72def Td2a8ffcan_receiveTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3from_sourceTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ff_sinkTb4b4b4: Tff7b72return Tff7b72selfTff7b72.Td2a8ff_sinkTff7b72.Td2a8ffcan_receiveTb4b4b4(Te6edf3from_sourceTb4b4b4)
Tff7b72elseTb4b4b4: Tff7b72return Tff7b72True

Tff7b72def Td2a8ffhandle_frameTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3frameTb4b4b4, Te6edf3sourceTb4b4b4)Tb4b4b4:
Tff7b72with Tff7b72selfTff7b72.Td2a8ffloopback_lockTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffcodec Tff7b72and Tff7b72selfTff7b72.Td2a8ffsinkTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsinkTff7b72.Td2a8ffhandle_frameTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffdecodeTb4b4b4(Te6edf3frameTb4b4b4)Tb4b4b4, Tff7b72selfTb4b4b4)

Tf0883e@property
Tff7b72def Td2a8ffsourceTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72return Tff7b72selfTff7b72.Td2a8ff_source

Tf0883e@sourceTff7b72.Td2a8ffsetter
Tff7b72def Td2a8ffsourceTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sourceTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ff_source Tff7b72= Te6edf3source

Tff7b72class T56d364LineSourceTb4b4b4(Te6edf3LocalSourceTb4b4b4)Tb4b4b4:
Te6edf3MAX_FRAMES Tff7b72= T79c0ff128
Te6edf3DEFAULT_FRAME_MS Tff7b72= T79c0ff80

Tf0883e@staticmethod
Tff7b72def Td2a8fflinear_gainTb4b4b4(Te6edf3gain_dbTb4b4b4)Tb4b4b4: Tff7b72return T79c0ff10Tff7b72*Tff7b72*Tb4b4b4(Te6edf3gain_dbTff7b72/T79c0ff10Tb4b4b4)

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3preferred_deviceTff7b72=Tff7b72NoneTb4b4b4, Te6edf3target_frame_msTff7b72=Te6edf3DEFAULT_FRAME_MSTb4b4b4, Te6edf3codecTff7b72=Tff7b72NoneTb4b4b4, Te6edf3sinkTff7b72=Tff7b72NoneTb4b4b4, Te6edf3filtersTff7b72=Tff7b72NoneTb4b4b4, Te6edf3gainTff7b72=T79c0ff0.0Tb4b4b4, Te6edf3ease_inTff7b72=T79c0ff0.0Tb4b4b4, Te6edf3skipTff7b72=T79c0ff0.0Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffpreferred_device Tff7b72= Te6edf3preferred_device
Tff7b72selfTff7b72.Td2a8ffframe_deque Tff7b72= Te6edf3dequeTb4b4b4(Te6edf3maxlenTff7b72=Tff7b72selfTff7b72.Td2a8ffMAX_FRAMESTb4b4b4)
Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72= Te6edf3target_frame_ms
Tff7b72selfTff7b72.Td2a8ffsamplerate Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffchannels Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffbitdepth Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffshould_run Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffingest_thread Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffrecording_lock Tff7b72= Te6edf3threadingTff7b72.Td2a8ffLockTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ff_codec Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffcodec Tff7b72= Te6edf3codec
Tff7b72selfTff7b72.Td2a8ffsink Tff7b72= Te6edf3sink
Tff7b72selfTff7b72.Td2a8fffilters Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffease_in Tff7b72= Te6edf3ease_in
Tff7b72selfTff7b72.Td2a8ffgain Tff7b72= Te6edf3gain
Tff7b72selfTff7b72.Td2a8ff__skip Tff7b72= Te6edf3skip
Tff7b72selfTff7b72.Td2a8ff__gain Tff7b72= Tff7b72selfTff7b72.Td2a8fflinear_gainTb4b4b4(Tff7b72selfTff7b72.Td2a8ffgainTb4b4b4)
Tff7b72selfTff7b72.Td2a8ff__target_gain Tff7b72= Tff7b72selfTff7b72.Td2a8ff__gain

Tff7b72if Te6edf3filters Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72if Tffa657typeTb4b4b4(Te6edf3filtersTb4b4b4) Tff7b72== Tffa657listTb4b4b4: Tff7b72selfTff7b72.Td2a8fffilters Tff7b72= Te6edf3filters
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8fffilters Tff7b72= Tb4b4b4[Te6edf3filtersTb4b4b4]

Tff7b72if Tff7b72selfTff7b72.Td2a8ffease_in Tff7b72!= T79c0ff0.0Tb4b4b4: Tff7b72selfTff7b72.Td2a8ff__gain Tff7b72= T79c0ff0.0

Tf0883e@property
Tff7b72def Td2a8ffcodecTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72return Tff7b72selfTff7b72.Td2a8ff_codec

Tf0883e@codecTff7b72.Td2a8ffsetter
Tff7b72def Td2a8ffcodecTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3codecTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3codec Tff7b72== Tff7b72NoneTb4b4b4: Tff7b72selfTff7b72.Td2a8ff_codec Tff7b72= Tff7b72None
Tff7b72elif Tff7b72not Tffa657issubclassTb4b4b4(Tffa657typeTb4b4b4(Te6edf3codecTb4b4b4)Tb4b4b4, Te6edf3CodecTb4b4b4)Tb4b4b4: Tff7b72raise Te6edf3CodecErrorTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffInvalid codec specified for Tffd700{Tff7b72selfTffd700}Ta5d6ff"Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ff_codec Tff7b72= Te6edf3codec

Tff7b72if Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffpreferred_samplerateTb4b4b4: Tff7b72selfTff7b72.Td2a8ffpreferred_samplerate Tff7b72= Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffpreferred_samplerate
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ffpreferred_samplerate Tff7b72= Te6edf3BackendTff7b72.Td2a8ffSAMPLERATE

Tff7b72if Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_quanta_msTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8fftarget_frame_msTff7b72%Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_quanta_ms Tff7b72!= T79c0ff0Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72= Te6edf3mathTff7b72.Td2a8ffceilTb4b4b4(Tff7b72selfTff7b72.Td2a8fftarget_frame_msTff7b72/Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_quanta_msTb4b4b4)Tff7b72*Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_quanta_ms
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff target frame time quantized to Tffd700{Tff7b72selfTff7b72.Td2a8fftarget_frame_msTffd700}Ta5d6ffms due to codec frame quantaTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_max_msTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72> Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_max_msTb4b4b4:
Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72= Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_max_ms
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff target frame time clamped to Tffd700{Tff7b72selfTff7b72.Td2a8fftarget_frame_msTffd700}Ta5d6ffms due to codec frame limitTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffvalid_frame_msTb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72in Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffvalid_frame_msTb4b4b4:
Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72= Tffa657minTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffvalid_frame_msTb4b4b4, Te6edf3keyTff7b72=Tff7b72lambda Te6edf3tTb4b4b4:Tffa657absTb4b4b4(Te6edf3tTff7b72-Tff7b72selfTff7b72.Td2a8fftarget_frame_msTb4b4b4)Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff target frame time clamped to closest valid value of Tffd700{Tff7b72selfTff7b72.Td2a8fftarget_frame_msTffd700}Ta5d6ffms Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffbackend Tff7b72= Te6edf3BackendTb4b4b4(Te6edf3preferred_deviceTff7b72=Tff7b72selfTff7b72.Td2a8ffpreferred_deviceTb4b4b4, Te6edf3samplerateTff7b72=Tff7b72selfTff7b72.Td2a8ffpreferred_samplerateTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffsamplerate Tff7b72= Tff7b72selfTff7b72.Td2a8ffbackendTff7b72.Td2a8ffsamplerate
Tff7b72selfTff7b72.Td2a8ffbitdepth Tff7b72= Tff7b72selfTff7b72.Td2a8ffbackendTff7b72.Td2a8ffbitdepth
Tff7b72selfTff7b72.Td2a8ffchannels Tff7b72= Tff7b72selfTff7b72.Td2a8ffbackendTff7b72.Td2a8ffchannels
Tff7b72selfTff7b72.Td2a8ffsamples_per_frame Tff7b72= Te6edf3mathTff7b72.Td2a8ffceilTb4b4b4(Tb4b4b4(Tff7b72selfTff7b72.Td2a8fftarget_frame_msTff7b72/T79c0ff1000Tb4b4b4)Tff7b72*Tff7b72selfTff7b72.Td2a8ffsamplerateTb4b4b4)

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffshould_runTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff starting at Tffd700{Tff7b72selfTff7b72.Td2a8ffsamples_per_frameTffd700}Ta5d6ff samples per frame, Tffd700{Tff7b72selfTff7b72.Td2a8ffchannelsTffd700}Ta5d6ff channelsTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffshould_run Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffingest_thread Tff7b72= Te6edf3threadingTff7b72.Td2a8ffThreadTb4b4b4(Te6edf3targetTff7b72=Tff7b72selfTff7b72.Td2a8ff__ingest_jobTb4b4b4, Te6edf3daemonTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffingest_threadTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffstopTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffshould_run Tff7b72= Tff7b72False

Tff7b72def Td2a8ff__ingest_jobTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72with Tff7b72selfTff7b72.Td2a8ffrecording_lockTb4b4b4:
Te6edf3frame_samples Tff7b72= Tff7b72None
Tff7b72if Tff7b72not Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_darwinTb4b4b4(Tb4b4b4)Tb4b4b4: Te6edf3backend_samples_per_frame Tff7b72= Tff7b72selfTff7b72.Td2a8ffsamples_per_frame
Tff7b72elseTb4b4b4: Te6edf3backend_samples_per_frame Tff7b72= Tff7b72None

Tff7b72with Tff7b72selfTff7b72.Td2a8ffbackendTff7b72.Td2a8ffget_recorderTb4b4b4(Te6edf3samples_per_frameTff7b72=Te6edf3backend_samples_per_frameTb4b4b4) Tff7b72as Te6edf3recorderTb4b4b4:
Te6edf3started Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)
Te6edf3ease_in_completed Tff7b72= Tff7b72True Tff7b72if Tff7b72selfTff7b72.Td2a8ffease_in Tff7b72<Tff7b72= T79c0ff0.0 Tff7b72else Tff7b72False
Te6edf3skip_completed Tff7b72= Tff7b72True Tff7b72if Tff7b72selfTff7b72.Td2a8ff__skip Tff7b72<Tff7b72= T79c0ff0.0 Tff7b72else Tff7b72False
Tff7b72while Tff7b72selfTff7b72.Td2a8ffshould_runTb4b4b4:
Te6edf3frame_samples Tff7b72= Te6edf3recorderTff7b72.Td2a8ffrecordTb4b4b4(Te6edf3numframesTff7b72=Tff7b72selfTff7b72.Td2a8ffsamples_per_frameTb4b4b4)
Tff7b72if Tff7b72not Te6edf3skip_completedTb4b4b4:
Tff7b72if Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tff7b72-Te6edf3started Tff7b72> Tff7b72selfTff7b72.Td2a8ff__skipTb4b4b4:
Te6edf3skip_completed Tff7b72= Tff7b72True
Te6edf3started Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8fffilters Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72for Te6edf3f Tff7b72in Tff7b72selfTff7b72.Td2a8fffiltersTb4b4b4: Te6edf3frame_samples Tff7b72= Te6edf3fTff7b72.Td2a8ffhandle_frameTb4b4b4(Te6edf3frame_samplesTb4b4b4, Tff7b72selfTff7b72.Td2a8ffsamplerateTb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ff__gain Tff7b72!= T79c0ff1.0Tb4b4b4: Te6edf3frame_samples Tff7b72*Tff7b72= Tff7b72selfTff7b72.Td2a8ff__gain
Tff7b72if Tff7b72selfTff7b72.Td2a8ffcodecTb4b4b4:
Te6edf3frame Tff7b72= Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffencodeTb4b4b4(Te6edf3frame_samplesTb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffsink Tff7b72and Tff7b72selfTff7b72.Td2a8ffsinkTff7b72.Td2a8ffcan_receiveTb4b4b4(Te6edf3from_sourceTff7b72=Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsinkTff7b72.Td2a8ffhandle_frameTb4b4b4(Te6edf3frameTb4b4b4, Tff7b72selfTb4b4b4)
Tff7b72if Tff7b72not Te6edf3ease_in_completedTb4b4b4:
Te6edf3d Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tff7b72-Te6edf3started
Tff7b72selfTff7b72.Td2a8ff__gain Tff7b72= Tb4b4b4(Te6edf3dTff7b72/Tff7b72selfTff7b72.Td2a8ffease_inTb4b4b4)Tff7b72*Tff7b72selfTff7b72.Td2a8ff__target_gain
Tff7b72if Tff7b72selfTff7b72.Td2a8ff__gain Tff7b72>Tff7b72= Tff7b72selfTff7b72.Td2a8ff__target_gainTb4b4b4:
Tff7b72selfTff7b72.Td2a8ff__gain Tff7b72= Tff7b72selfTff7b72.Td2a8ff__target_gain
Te6edf3ease_in_completed Tff7b72= Tff7b72True


Tff7b72class T56d364OpusFileSourceTb4b4b4(Te6edf3LocalSourceTb4b4b4)Tb4b4b4:
Te6edf3MAX_FRAMES Tff7b72= T79c0ff128
Te6edf3DEFAULT_FRAME_MS Tff7b72= T79c0ff100
Te6edf3TYPE_MAP_FACTOR Tff7b72= Te6edf3npTff7b72.Td2a8ffiinfoTb4b4b4(Ta5d6ff"Ta5d6ffint16Ta5d6ff"Tb4b4b4)Tff7b72.Td2a8ffmax

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3file_pathTb4b4b4, Te6edf3target_frame_msTff7b72=Te6edf3DEFAULT_FRAME_MSTb4b4b4, Te6edf3loopTff7b72=Tff7b72FalseTb4b4b4, Te6edf3codecTff7b72=Tff7b72NoneTb4b4b4, Te6edf3sinkTff7b72=Tff7b72NoneTb4b4b4, Te6edf3timedTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72= Te6edf3target_frame_ms
Tff7b72selfTff7b72.Td2a8ffloop Tff7b72= Te6edf3loop
Tff7b72selfTff7b72.Td2a8fftimed Tff7b72= Te6edf3timed
Tff7b72selfTff7b72.Td2a8ffread_lock Tff7b72= Te6edf3threadingTff7b72.Td2a8ffLockTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffshould_run Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffingest_thread Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffnext_frame Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ff_codec Tff7b72= Tff7b72None

Tff7b72if Te6edf3file_path Tff7b72== Tff7b72NoneTb4b4b4: Tff7b72raise Tf85149TypeErrorTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff initialised with invalid file path: Tffd700{Te6edf3file_pathTffd700}Ta5d6ff"Tb4b4b4)
Tff7b72elif Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffisfileTb4b4b4(Te6edf3file_pathTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fffile Tff7b72= Te6edf3OpusFileTb4b4b4(Te6edf3file_pathTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffsamplerate Tff7b72= Tff7b72selfTff7b72.Td2a8fffileTff7b72.Td2a8fffrequency
Tff7b72selfTff7b72.Td2a8ffchannels Tff7b72= Tff7b72selfTff7b72.Td2a8fffileTff7b72.Td2a8ffchannels
Tff7b72selfTff7b72.Td2a8ffbitdepth Tff7b72= T79c0ff16
Tff7b72selfTff7b72.Td2a8ffsamples Tff7b72= Tff7b72selfTff7b72.Td2a8fffileTff7b72.Td2a8ffas_arrayTb4b4b4(Tb4b4b4)Tff7b72/Tff7b72selfTff7b72.Td2a8ffTYPE_MAP_FACTOR
Tff7b72selfTff7b72.Td2a8ffsample_count Tff7b72= Tff7b72selfTff7b72.Td2a8ffsamplesTff7b72.Td2a8ffshapeTb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72selfTff7b72.Td2a8fflength_ms Tff7b72= Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffsample_countTff7b72/Tff7b72selfTff7b72.Td2a8ffsamplerateTb4b4b4)Tff7b72*T79c0ff1000
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff loaded Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettytimeTb4b4b4(Tff7b72selfTff7b72.Td2a8fflength_msTff7b72/T79c0ff1000Tb4b4b4)Tffd700}Ta5d6ff of audio from Tffd700{Te6edf3file_pathTffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff samplerate is Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyfrequencyTb4b4b4(Tff7b72selfTff7b72.Td2a8ffsamplerateTb4b4b4)Tffd700}Ta5d6ff, Tffd700{Tff7b72selfTff7b72.Td2a8ffchannelsTffd700}Ta5d6ff channels, Tffd700{Tff7b72selfTff7b72.Td2a8ffsample_countTffd700}Ta5d6ff samples in totalTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72elseTb4b4b4: Tff7b72raise Tf85149OSErrorTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff file Tffd700{Te6edf3file_pathTffd700}Ta5d6ff not foundTa5d6ff"Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffcodec Tff7b72= Te6edf3codec
Tff7b72selfTff7b72.Td2a8ffsink Tff7b72= Te6edf3sink

Tf0883e@property
Tff7b72def Td2a8ffrunningTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72return Tff7b72selfTff7b72.Td2a8ffshould_run

Tf0883e@property
Tff7b72def Td2a8ffcodecTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72return Tff7b72selfTff7b72.Td2a8ff_codec

Tf0883e@codecTff7b72.Td2a8ffsetter
Tff7b72def Td2a8ffcodecTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3codecTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3codec Tff7b72== Tff7b72NoneTb4b4b4: Tff7b72selfTff7b72.Td2a8ff_codec Tff7b72= Tff7b72None
Tff7b72elif Tff7b72not Tffa657issubclassTb4b4b4(Tffa657typeTb4b4b4(Te6edf3codecTb4b4b4)Tb4b4b4, Te6edf3CodecTb4b4b4)Tb4b4b4: Tff7b72raise Te6edf3CodecErrorTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffInvalid codec specified for Tffd700{Tff7b72selfTffd700}Ta5d6ff"Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ff_codec Tff7b72= Te6edf3codec

Tff7b72if Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_quanta_msTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8fftarget_frame_msTff7b72%Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_quanta_ms Tff7b72!= T79c0ff0Tb4b4b4:
Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72= Te6edf3mathTff7b72.Td2a8ffceilTb4b4b4(Tff7b72selfTff7b72.Td2a8fftarget_frame_msTff7b72/Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_quanta_msTb4b4b4)Tff7b72*Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_quanta_ms
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff target frame time quantized to Tffd700{Tff7b72selfTff7b72.Td2a8fftarget_frame_msTffd700}Ta5d6ffms due to codec frame quantaTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_max_msTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72> Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_max_msTb4b4b4:
Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72= Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffframe_max_ms
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff target frame time clamped to Tffd700{Tff7b72selfTff7b72.Td2a8fftarget_frame_msTffd700}Ta5d6ffms due to codec frame limitTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffvalid_frame_msTb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72in Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffvalid_frame_msTb4b4b4:
Tff7b72selfTff7b72.Td2a8fftarget_frame_ms Tff7b72= Tffa657minTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffvalid_frame_msTb4b4b4, Te6edf3keyTff7b72=Tff7b72lambda Te6edf3tTb4b4b4:Tffa657absTb4b4b4(Te6edf3tTff7b72-Tff7b72selfTff7b72.Td2a8fftarget_frame_msTb4b4b4)Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff target frame time clamped to closest valid value of Tffd700{Tff7b72selfTff7b72.Td2a8fftarget_frame_msTffd700}Ta5d6ffms Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffsamples_per_frame Tff7b72= Te6edf3mathTff7b72.Td2a8ffceilTb4b4b4(Tb4b4b4(Tff7b72selfTff7b72.Td2a8fftarget_frame_msTff7b72/T79c0ff1000Tb4b4b4)Tff7b72*Tff7b72selfTff7b72.Td2a8ffsamplerateTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffframe_time Tff7b72= Tff7b72selfTff7b72.Td2a8ffsamples_per_frameTff7b72/Tff7b72selfTff7b72.Td2a8ffsamplerate
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff frame time is Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyshorttimeTb4b4b4(Tff7b72selfTff7b72.Td2a8ffframe_timeTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffshould_runTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff starting at Tffd700{Tff7b72selfTff7b72.Td2a8ffsamples_per_frameTffd700}Ta5d6ff samples per frame, Tffd700{Tff7b72selfTff7b72.Td2a8ffchannelsTffd700}Ta5d6ff channelsTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffshould_run Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffingest_thread Tff7b72= Te6edf3threadingTff7b72.Td2a8ffThreadTb4b4b4(Te6edf3targetTff7b72=Tff7b72selfTff7b72.Td2a8ff__ingest_jobTb4b4b4, Te6edf3daemonTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffingest_threadTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffstopTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffshould_run Tff7b72= Tff7b72False

Tff7b72def Td2a8ff__ingest_jobTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72with Tff7b72selfTff7b72.Td2a8ffread_lockTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffnext_frame Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)
Te6edf3fi Tff7b72= T79c0ff0Tb4b4b4; Te6edf3spf Tff7b72= Tff7b72selfTff7b72.Td2a8ffsamples_per_frameTb4b4b4; Te6edf3sc Tff7b72= Tff7b72selfTff7b72.Td2a8ffsample_count
Tff7b72while Tff7b72selfTff7b72.Td2a8ffshould_runTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffsink Tff7b72and Tff7b72selfTff7b72.Td2a8ffsinkTff7b72.Td2a8ffcan_receiveTb4b4b4(Te6edf3from_sourceTff7b72=Tff7b72selfTb4b4b4) Tff7b72and Tb4b4b4(Tff7b72not Tff7b72selfTff7b72.Td2a8fftimed Tff7b72or Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4) Tff7b72>Tff7b72= Tff7b72selfTff7b72.Td2a8ffnext_frameTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffnext_frame Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tff7b72+Tff7b72selfTff7b72.Td2a8ffframe_time
Te6edf3fi Tff7b72+Tff7b72= T79c0ff1
Te6edf3fs Tff7b72= Tb4b4b4(Te6edf3fiTff7b72-T79c0ff1Tb4b4b4)Tff7b72*Te6edf3spfTb4b4b4; Te6edf3fe Tff7b72= Tffa657minTb4b4b4(Te6edf3fiTff7b72*Te6edf3spfTb4b4b4, Te6edf3scTb4b4b4)
Te6edf3frame_samples Tff7b72= Tff7b72selfTff7b72.Td2a8ffsamplesTb4b4b4[Te6edf3fsTb4b4b4:Te6edf3feTb4b4b4, Tb4b4b4:Tb4b4b4]
Tff7b72if Tffa657lenTb4b4b4(Te6edf3frame_samplesTb4b4b4) Tff7b72< T79c0ff1Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffloopTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff exhausted file samples, looping...Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Te6edf3fi Tff7b72= T79c0ff0
Tff7b72elseTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Tff7b72selfTffd700}Ta5d6ff exhausted file samples, stopping...Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffshould_run Tff7b72= Tff7b72False
Tff7b72elseTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffcodecTb4b4b4:
Te6edf3frame Tff7b72= Tff7b72selfTff7b72.Td2a8ffcodecTff7b72.Td2a8ffencodeTb4b4b4(Te6edf3frame_samplesTb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffsink Tff7b72and Tff7b72selfTff7b72.Td2a8ffsinkTff7b72.Td2a8ffcan_receiveTb4b4b4(Te6edf3from_sourceTff7b72=Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsinkTff7b72.Td2a8ffhandle_frameTb4b4b4(Te6edf3frameTb4b4b4, Tff7b72selfTb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3timeTff7b72.Td2a8ffsleepTb4b4b4(Tff7b72selfTff7b72.Td2a8ffframe_timeTff7b72*T79c0ff0.1Tb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────